package Rent;

import java.util.Scanner;

//定义抽象父类Car，无论是轿车还是客车都是属于父类车
public abstract class Car{
    private String brand;//定义私有的属性汽车品牌brand
    private String idCar;//定义私有的属性车牌号idCar
    private double dayRent;//定义私有的属性日租金
    public Car(){//定义无参构造方法

    }
    public Car(String brand,String idCar,double dayRent){//定义有三个参数的有参构造方法
        //当参数列表中的局部变量，与属性同名时，  this.属性名表示的是属性，也即成员变量
        this.brand = brand;//this.属性名
        this.dayRent = dayRent;
        this.idCar = idCar;
    }
//为私有属性或者成为变量，提供公有的访问方法
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getIdCar() {
        return idCar;
    }

    public void setIdCar(String idCar) {
        this.idCar = idCar;
    }

    public double getDayRent() {
        return dayRent;
    }

    public void setDayRent(double dayRent) {
        this.dayRent = dayRent;
    }

    //定义抽象方法折扣discount,根据租车的天数，算出折扣
    abstract double discount(int days);
}
//定义实现抽象方法的轿车类SaloonCar,或者说定义子类SaloonCar继承父类
class SaloonCar extends Car{
    private String type;//定义私有属性车的型号
    public SaloonCar(){//定义子类的无参构造方法
    }
    public SaloonCar(String brand,String idCar,double dayRent,String type){//定义子类的有参构造方法
        super(brand, idCar, dayRent);//调用父类的有相同参数的构造方法
        this.type = type;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
//重写抽象父类Car中的方法discount
    @Override
    double discount(int days) {
        double money = 0;
        if (days > 7 && days <= 30) {
            money = days * 0.9;
        }else if(days>30&&days<=150){
            money = days *0.8;
        }else if(days>150){
            money = days*0.7;
        }
        return money;//返回用车的这些天，所需要的钱
    }
}
//定义Bus类继承Car类
class Bus extends Car{
    private int numSit;//定义私有属性座位数
    public Bus(){//定义无参构造方法
    }
    public Bus(String brand,String idCar,double dayRent,int numSit){//定义有参构造方法
        super(brand, idCar, dayRent);//调用父类中有相同参数的构造方法
        this.numSit = numSit;
    }
//为私有属性定义公有的访问方法
    public int getNumSit() {
        return numSit;
    }

    public void setNumSit(int numSit) {
        this.numSit = numSit;
    }

    @Override
    double discount(int days) {
        double money = 0;
        if(days>=3&&days<7){
            money = days*0.9;
        }else if(days>=7&&days<30){
            money=days*0.8;
        }else if(days>=30&&days<150){
            money=days*0.7;
        }else if(days>=150){
            money=days*0.6;
        }
        return money;//返回用车的这些天，所需要的钱
    }
}
